home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / answers / comp / amiga / introduction / part1 < prev    next >
Text File  |  1994-03-29  |  48KB  |  1,071 lines

  1. Path: bloom-beacon.mit.edu!hookup!news.moneng.mei.com!howland.reston.ans.net!EU.net!Germany.EU.net!netmbx.de!zrz.TU-Berlin.DE!zib-berlin.de!news.th-darmstadt.de!News.Uni-Marburg.DE!news.belwue.de!iptc!newsserv.zdv.uni-tuebingen.de!zrawi01
  2. From: wiedmann@mailserv.zdv.uni-tuebingen.de (Jochen Wiedmann)
  3. Newsgroups: comp.sys.amiga.introduction,comp.sys.amiga.misc,comp.sys.amiga.programmer,comp.answers,news.answers
  4. Subject: Amiga FAQ (Frequently asked questions) (Part 1 of 2)
  5. Supersedes: <AmigaFAQ-1-762303603@mailserv.zdv.uni-tuebingen.de>
  6. Followup-To: comp.sys.amiga.introduction
  7. Date: 29 Mar 1994 19:55:04 GMT
  8. Organization: InternetNews at ZDV, University of Tuebingen, Germany
  9. Lines: 1050
  10. Approved: news-answers-request@MIT.Edu
  11. Distribution: world
  12. Expires: Saturday, 16 Apr 94 21:42:28 (Z)
  13. Message-ID: <AmigaFAQ-1-764970148@mailserv.zdv.uni-tuebingen.de>
  14. Reply-To: wiedmann@mailserv.zdv.uni-tuebingen.de (Jochen Wiedmann)
  15. NNTP-Posting-Host: mailserv.zdv.uni-tuebingen.de
  16. Summary: Frequently asked questions on the Amiga.
  17.          New users should read this!
  18. Originator: zrawi01@mailserv.zdv.uni-tuebingen.de
  19. Xref: bloom-beacon.mit.edu comp.sys.amiga.introduction:2623 comp.sys.amiga.misc:27700 comp.sys.amiga.programmer:27446 comp.answers:4344 news.answers:16993
  20.  
  21. Posted-By: auto-faq 2.4
  22. Archive-name: amiga/introduction/part1
  23. Last-modified: 29-Mar-1994
  24.  
  25.  
  26.       Frequently asked questions (FAQ) concerning the Amiga. [1/2]
  27.       ------------------------------------------------------------
  28.  
  29. Below you find a list of frequently asked questions. It should especially
  30. be for new users but perhaps experienced users may find something too.
  31. This is part 1, the second begins with chapter 5.
  32.  
  33. It is in Ascii format to be easily read by everyone. It is also available
  34. in AmigaGuide and Dvi format as part of the Amiga-FAQ archive. (File
  35. text/docs/AmigaFAQxxxxxx.lha on any Aminet site, where xxxxxx is the date
  36. of the last version.)
  37.  
  38. Please note the following:
  39.  
  40.   - Changes since the last posting are marked with a
  41.     !    changed this line/section, respectively
  42.     +    added this line
  43.     <    removed something before this line
  44.  
  45.   - An index is at the bottom of part 2. If this still doesn't help:
  46.     E-mail me, probably I can include an answer into the FAQ.
  47.  
  48.   - Suggestions, contributions, critics and beer bottles are very
  49.     welcome. :-) Send them to:
  50.  
  51.         Jochen Wiedmann
  52.         Am Eisteich 9
  53.       72555 Metzingen (Germany)
  54.         Tel. 07123 / 14881
  55.  
  56.         Internet: wiedmann@mailserv.zdv.uni-tuebingen.de
  57.  
  58. ===========================(Cut here)=========================================
  59.  
  60.   Amiga-FAQ
  61.   *********
  62.   
  63.      This document lists some frequently asked questions and trys to give
  64.   answers.  Is intention is to help new users and to reduce the amount of
  65.   news that most experienced users don't like to read anymore.
  66.   
  67.      Please notice that there are many questions that aren't answered yet,
  68.   even more: Whole sections that remain empty! I feel that I cannot give
  69.   satisfying answers. So it's your turn: Fill the gaps and tell me what i
  70.   should include into this document!
  71.   
  72.  
  73.   Disclaimer
  74.  
  75.   1 CPU, Custom chips, RAM and other stuff
  76.     1 What are the 68EC020 and the 68EC030?
  77.     2 What's an FPU?
  78.  
  79.   2 The Operating System
  80.     1 Can I use another Kickstart than the builtin?
  81.  
  82.   3 Programming
  83. !   1 What documentation do I need as an Amiga programmer?
  84.     2 What is CATS?
  85. !   3 Where do I get the Amiga includes?
  86.     4 How do I become a developer?
  87. !   5 What compilers (assemblers) are there?
  88.     6 Those never working Esc sequences!
  89.     7 Is it possible to use AmigaBasic on the A1200?
  90.     8 How do I localize my program?
  91.     9 How to obtain a pointer to a console's window
  92.     10 What are pragmas?
  93.     11 Where do I find the function xxx?
  94.  
  95.   4 Applications
  96.     1 Text Editors
  97.     2 What word processors are there?
  98.     3 Desktop Publishing
  99.     4 What is TeX and where can I get it?
  100.     5 Are there any Postscript interpreters?
  101.  
  102.   5 How about Graphics?
  103.     1 What are chunky and planar displays?
  104.     2 What is doublebuffering?
  105.     3 What monitors will work on my Amiga 1200/4000?
  106.     4 How do I switch between PAL and NTSC?
  107.  
  108.   6 Emulators
  109.     1 Can I run Unix on my Amiga?
  110.     2 Is it possible to use the Amiga as X11 terminal?
  111.  
  112.   7 Miscellaneous
  113.     1 Is there any unix version of LhA?
  114.     2 What are files ending with ...?
  115.     3 Is there a Stacker-like utility to pack my hard drive?
  116.     4 Where do I get Fish disk xxx?
  117.  
  118.   8 Where and how do I get Software?
  119.     1 Files and databases on freely distributable software
  120.     2 A collection of tests
  121.     3 Getting files from a FTP server
  122.     4 Getting files from a Mail server
  123.     5 The Fish disks
  124.       1 The Amiga Library disks
  125.       2 The Fresh Fish CD-Roms
  126.     6 How do I Read and write MS-Dos disks?
  127.     7 How do I split large files?
  128.  
  129.   The Amiga-FAQ archive
  130.  
  131.   Contributions
  132.  
  133.   Credits
  134.  
  135.   Index
  136.  
  137.  
  138.  
  139.   Disclaimer
  140.   **********
  141.   
  142.      This document is
  143.   
  144.        Copyright (C)  Jochen Wiedmann
  145.                        Am Eisteich 9
  146.                  72555 Metzingen (Germany)
  147.                        Tel. 07123 / 14881
  148.                        Internet: wiedmann@mailserv.zdv.uni-tuebingen.de
  149.   
  150.      Permission is granted to make and distribute verbatim and modified
  151.   copies of this document following the terms of the "GNU General Public
  152.   License" provided the copyright notice and this permission notice are
  153.   preserved on all copies.
  154.   
  155.      The author gives *absolutely no* warranty that the answers given
  156.   here are correct or usable. Many of them were contributed by other users
  157.   and I cannot even make marginal checks. If you think that something
  158.   should be changed, please tell me. Suggestions, contributions, new
  159.   answers, critics, flames (oh, how I like this `nil:' :-) are rather
  160.   welcome.  See Contributions.
  161.   
  162.   1 CPU, Custom chips, RAM and other stuff
  163.   ****************************************
  164.   
  165.      This chapter contains questions concerning the Amiga-Hardware.
  166.   
  167.   1.1 What are the 68EC020 and the 68EC030?
  168.   =========================================
  169.   
  170.      Motorola, the company producing the 680x0 family offers crippled
  171.   versions of their processors. They are a little bit cheaper than the
  172.   originals, that's why Commodore decided to build the 68EC020 into the
  173.   A1200 and the 68EC030 into the A4000/030.
  174.   
  175.      The difference between the 68020 and the 68EC020 is that the latter
  176.   can address just 16Mb of memory. That's why the A1200 cannot have more
  177.   that 10 Mb RAM. In most cases you will not notice the difference.
  178.   
  179.      This is not the case for the 68EC030: Many owners will notice that
  180.   the 68030 has an MMU and the 68EC030 doesn't have. There are some
  181.   important programs depending on an MMU, for example Enforcer (a
  182.   debugging utility), GigaMem (a program to emulate virtual memory) or
  183.   all current Unix versions (see Unix). Other Amigas than the A4000 and
  184.   the A3000 need an additional processor card to run these.
  185.   
  186.      Finally the 68LC040 is a 68040 without FPU. See FPU.
  187.   
  188.   1.2 What's an FPU?
  189.   ==================
  190.   
  191.      The first 680x0 processors (upto 68030) could process integers only.
  192.   Floating point operations had to be emulated by the software. An FPU is
  193.   a chip (or part of a chip) that can process floating point operations, a
  194.   mathematical coprocessor.
  195.   
  196.      One separates three FPU types on the Amiga: The 68881, 68882 and the
  197.   68040's internal FPU. The 68882 is up to 1.5 times faster than the
  198.   68881, because it is splitted in two parts: A conversion unit (the
  199.   FPU's are using an 80 bit format internally) and the arithmetic unit.
  200.   The 68040's internal FPU adds a pipeline, but misses the trigonometric
  201.   instructions of the others. These are still emulated by the software,
  202.   68040.library for example.
  203.   
  204.      Special programs (Raytracing, DTP, Mathematics, TeX) are offered in a
  205.   special coprocessor version which are up to 50 times faster than the
  206.   original versions.
  207.   
  208.      Michael Kaiser (kaiser@ira.uka.de)
  209.   
  210.   2 The Operating System
  211.   **********************
  212.   
  213.      This chapter handles questions concerning the operating system,
  214.   Kickstart as well as the Workbench.
  215.   
  216.   2.1 Can I use another Kickstart than the builtin?
  217.   =================================================
  218.   
  219.      First let's drop some words on the Kickstart's Copyright: This
  220.   belongs to Commodore, you *must* not use Kickstarts, without the right
  221.   to do it!  Especially it isn't allowed to make an image of anyone
  222.   else's Kickstart and run this on your own Amiga. (I even doubt that it
  223.   is allowed to do this on your own Amigas, if you have more than one.)
  224.   
  225.      But of course it is possible and allowed for some people, developers
  226.   for example.  There are two different ways, a hardware solution and a
  227.   software solution.  The former is to buy a card which can hold two or
  228.   more Kickstart ROMS and allows to select between when the System is
  229.   booting.
  230.   
  231.      The software solution needs a program (softkicker) and an image of
  232.   the ROM. The softkicker allocates RAM, loads the ROM image into the
  233.   allocated memory and reboots. Of course you have less RAM after the
  234.   Reboot: 256Kb when running Kickstart 1.2 or 1.3 and 512Kb for Kickstart
  235.   2.0 or higher.
  236.   
  237.      There are different Softkickers, some of them needing a MMU (see
  238.   68EC0xx). A nearly perfect solution seems to be `kick13' (Aminet,
  239.   directory `util/misc') because it has the ROM image included. (With
  240.   Commodores agreement!) For newer Kickstarts I recommend SKick 3.43
  241.   (Aminet, directory `os20/util') because it doesn't need a MMU and
  242.   supports many different Kickstarts. It is rather easy to create the ROM
  243.   image using the following program:
  244.   
  245.            #include <stdio.h>
  246.        
  247.            #define kickorig 0xf80000   /*  0xfc0000 for Kick 1.2 und 1.3   */
  248.            #define kicklen  0x080000   /*  0x040000 for Kick 1.2 und 1.3   */
  249.        
  250.            void main(int argc, char*argv[])
  251.              { FILE *fh;
  252.        
  253.                if ((fh = fopen("kickstart.file", "w"))  !=  NULL)
  254.                  { result = fwrite(kickorig, kicklen, 1, fh);
  255.                  }
  256.                fclose(fh);
  257.              }
  258.   
  259.   3 Programming
  260.   *************
  261.   
  262.      This chapter handles problems arising for programmers only.
  263.   
  264. ! 3.1 What documentation do I need as an Amiga programmer?
  265. ! ========================================================
  266.   
  267.      The best information available are the RKMs (ROM Kernel Manuals), 3rd
  268.   edition, by Commodore, published by Addison-Wesley:
  269.        The Amiga ROM Kernel Manual:  Libraries, ISBN 0-201-56774-1
  270.        The Amiga ROM Kernel Manual:  Devices, ISBN 0-201-56775-X
  271.        The Amiga ROM Kernel Manual:  Includes and Autodocs, ISBN
  272.                                                             0-201-56773-3
  273.        The Amiga Hardware Manual, ISBN 0-201-56776-8
  274.        The Amiga User Interface Style Guide, ISBN 0-201-57757-7
  275.   
  276.   Especially the RKM: Libraries is a must. The RKM: Includes and Autodocs
  277.   isn't that much worth: Better get the same stuff on disk instead to
  278.   have it online.  See Includes.
  279.   
  280.      AmigaDOS isn't included in these books. The Autodocs give much
  281.   information, but to go deeper you probably need
  282.        The AmigaDOS Manual, 3rd Edition, ISBN 0-553-35403-5
  283.      published by Bantam Books.
  284.   
  285.      Another good choice is
  286.        The Amiga Guru Book
  287.   
  288.   by Ralph Babel. The book starts with a survey on different aspects of
  289.   programming the Amiga. (About 250 pages) Useful for beginners are the
  290.   sections on the Amiga's data types (not to be confused with the 3.x
  291.   DataTypes used by MultiView, for example), the Includes and the
  292.   amiga.lib. But even experienced programmers will find useful things
  293.   here that are missing in the RKMs.  But the largest part are about 500
  294.   pages on AmigaDOS and, as I think, the most important, because AmigaDOS
  295.   is the worst officially documented part of the OS. The book is rather
  296.   concise and hence not as easy to read as the RKMs, but I recommend it
  297.   as an addition and instead of the AmigaDOS manual.  (Not, however, a
  298.   replacement for the Libraries and Devices, which aren't covered here.)
  299.   Unfortunately the book has no ISBN and is available in special stores
  300.   only. But there are some mail order companies which offer it for about
  301.   50$ and which accept credit cards:
  302.   
  303. !      Hirsch & Wolf OHG; Mittelstrasse 33; D-56564 Neuwied; Germany
  304. !      Voice: +49 (2631) 8399-0; Fax: +49 (2631) 8399-31
  305. !      E-Mail: <hhhirsch@carla.adsp.sub.org> (fax preferred)
  306.        (Eurocard/Mastercard/VISA)
  307.        
  308. !      Periscope; Attn: Cody Lee; 1717 W Kirby Ave; Champaign, IL 61821, USA
  309. !      Voice: +1 (217) 398 4237; Fax: +1 (217) 398 4238
  310. !      E-Mail: <periscope@cei.com>
  311. !      
  312. !      Someware; 27 rue Gabriel Peri; 59186 Anor; France
  313. !      Voice: +33 27596000; Fax: +33 27595206
  314. !      E-Mail: <didierj@swad.adsp.sub.org>
  315.   
  316.   3.2 What is CATS?
  317.   =================
  318.   
  319.      This is a department at Commodore West Chester which was formerly
  320.   named `Commodore Amiga Technical Support' and was later renamed
  321.   `Commodore Application and Technical Support'. These are people that
  322.   work independently of Engineering, but close together with them, and try
  323.   to help developers outside of Commodore to create nice Amiga
  324.   applications, software or hardware. To achieve this, CATS has gathered
  325.   a lot of informations and tools, on floppy, CD, or paper. Much of this
  326.   material is also available to the general public. (1) But don't mix
  327.   this up with some sort of Hotline for everyone!
  328.   
  329.      For Americans the address to get this material is
  330.            CATS - Developer Applications
  331.            Commodore
  332.            1200 Wilson Drive
  333.            West Chester, PA. 19380
  334.   
  335.   for all Europeans it's a company in Germany:
  336.            Fa. Hirsch & Wolf
  337.            Mittelstr. 33
  338.            56564 Neuwied
  339.            Tel. 02631/83990
  340.   
  341.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.com
  342.   
  343.      ---------- Footnotes ----------
  344.   
  345.      (1)  Which means: For Non-Developers.
  346.   
  347. ! 3.3 Where do I get the Amiga includes?
  348. ! ======================================
  349.   
  350.      The only legal way to get the includes and autodocs (and you *should*
  351.   get them, they are *very* useful!) is to become a developer (see
  352.   Developer) or to buy the `NDU' (Native developers update kit, also
  353.   known as `NDUK' or `NDK'), which is offered by CATS. They cost about
  354.   30$ plus shipping and this seems to me to be a fair price. See CATS.
  355.   The current version is 3.1.
  356.   
  357.      If you need only the includes, you could get them as well with a
  358. ! compiler (commercial compilers only) or by getting the Fresh Fish CD.
  359. ! See Fish CD.
  360.   
  361.   3.4 How do I become a developer?
  362.   ================================
  363.   
  364.      You need the `ADSP' (Amiga Developer Support Program) documents. To
  365.   get this write a letter to your local Commodore branch asking for these
  366.   documents.  Everything else should be explained there. The german
  367.   address (for the US address see CATS) is
  368.            Commodore
  369.            Lyoner Strasse 38
  370.            60528 Frankfurt
  371.      There are three different developer versions:
  372.   *Registered*
  373.        developers get access to the adsp-Net (kind of a
  374.        Commodore-internal Usenet), which makes it possible to discuss
  375.        problems with other developers, Commodore engineers included.
  376.        Registered developers pay about 80$ per year, plus initial 30$
  377.        initially.
  378.   
  379.   *Certified*
  380.        developers seem to me the most interesting claass: They have the
  381.        possibility copy the most beta versions of the system software
  382.        (Kickstart and Workbench) and the respective Includes and
  383.        AutoDocs. (Not all beta versions and especially no beta hardware.)
  384.        You pay about 250$ per year plus 50$ initially for this.
  385.   
  386.   *Commercial*
  387.        developers finally have in most details the same as certified
  388.        developers, but may expect to get more beta versions and sooner,
  389.        included beta hardware (This has *not* always been so in the
  390.        past.), hencethey pay about 400$ plus 50$ initially.
  391.   
  392.   The above describes the prices and the situation in Germany and might be
  393.   different elsewhere. Especially not all Commodore branches offer the
  394.   registered status. A tip is to build a group of users and become a
  395.   developer group, so the costs are reduced.
  396.   
  397.      All developers have to sign the so called`NDA' (non disclosure
  398.   agreement), with which they accept not to give the received
  399.   informations to unauthorized people.
  400.   
  401. ! 3.5 What compilers (assemblers) are there?
  402. ! ==========================================
  403.   
  404.      There is a lot of programming languages on the Amiga, commercial as
  405.   well as freely distributable. I will enumerate only those that I know
  406.   or which seem it worth to me otherwise.
  407.   
  408.   *Assembler*
  409.        All C-compilers have an Assembler included. Freely distributable
  410.        are A68K and PhxAss (directory `dev/asm' on Aminet or Fish disks
  411.        521 and 906)
  412.   
  413.   *C*
  414.   *C++*
  415.        Freely distributable C-compilers are `gcc' (which has its own
  416.        directory `dev/gcc' on Aminet) and the evaluation version of
  417.        `Dice' (for example per FTP from `ftp.uni-paderborn.de', directory
  418.        `/news/comp.binaries.amiga/volume91/languages' or on Fish disk
  419. !      491).  The advantage of `gcc' is that you find `gcc' versions all
  420. !      over the world and on all computer systems. Another advantage is
  421. !      that C++ is included into `gcc'! But it is slow and needs 4Mb of
  422. !      RAM or more.
  423.   
  424.        Commercial C compilers are `Aztec-C' and `SAS-C'. I cannot
  425.        recommend `Aztec-C', because the compiler doesn't seem to get
  426.        further development. It should be remarked that the commercial
  427.        compilers have especially wonderful debugging utilities (Source
  428. !      level debuggers!) that the others are missing.  SAS-C has a
  429. !      crosscompiler included, which translates C++ to C and supports the
  430. !      source level debugger too.  Dice is the cheapest and fastest of
  431. !      them, but SAS offers a students account and an update service
  432. !      (even for owners of other compilers) which isn't very expensive.
  433.   
  434.        Comeau C++ is a crosscompiler like SAS-C++. That wouldn't be a
  435.        problem, but Comeau C++ doesn't have a C compiler included.  You
  436.        need SAS-C, Aztec-C or Dice additionally. But it supports the
  437.        newest standards. And like gcc it runs on many platforms. Maxxon
  438.        C++ is offered in Germany. I cannot say anything on it. Both
  439.        compilers are commercial.  Comeaus address is:
  440.                 Comeau computing
  441.                 91-34, 120th Street
  442.                 Richmond Hill, NY, 11418-3214
  443.                 USA
  444.             
  445.                 EMail: Greg Comeau, comeau@bix.com
  446.   
  447.   *Forth*
  448.        JForth is said to be an excellent Amiga port of Forth. Among its
  449.        advantages are object oriented extensions, full Amiga interface
  450.        and an application generator. It is available from:
  451.                 Delta Research
  452.                 P.O. Box 151051
  453.                 San Rafael, CA   94915-1051
  454.             
  455.                 Phone: (415) 453-4320
  456.                 EMail: Phil Burk, phil@ntg.com
  457.                        Mike Haas, haas@starnine.com
  458.   
  459.   *Fortran*
  460.        (Sigh! Still people who need it :-<) Freely distributable are BCF
  461.        (Fish disk 470) and f2c, a Fortran to C converter (Aminet,
  462.        directory `/dev/misc'). A commercial compiler is offered from
  463.        ABSoft. All these are Fortran 77 compilers, I don't know any
  464.        Fortran 90 compiler on the Amiga.
  465.   
  466.   *Lisp*
  467.        Freely distributable Lisp interpreters are XLisp (Fish disk 181)
  468.        and OakLisp (Fish disks 519 and 520) and CLISP
  469.        (`/pub/lisp/clisp/binaries/amiga' at the server `ftp
  470.        ma2s2.mathematik.uni-karlsruhe.de'). Lisp compilers are Gambit
  471.        (Fish 764 and 765) and Scheme-to-C (Fish disks 556, 557 and 558).
  472.        A mailing list is available too: Send a mail with the word
  473.        `Subscribe' to `amigalisp@contessa.phone.net'.
  474.   
  475.   *Prolog*
  476.        `/dev/lang/UNSWProlog.lha' and `dev/lang/sbp3_1e.lha' on Aminet as
  477.        well as `SBProlog' on Fish disk 141 and `SBProlog' on Fish disk
  478.        145 are freely distributable Prolog interpreters.
  479.   
  480.   *Modula-2*
  481.        M2Amiga is offered in Europe, Benchmark Modula-2 in the U.S. Both
  482.        are said to be very good, have a powerful souurce-level-debugger,
  483.        a large library.  Especially M2Amiga has great support by a german
  484.        user-group (AMOK) which for example offers own PD disks.
  485.   
  486.        M2Amiga is offered by:
  487.                 A+L AG
  488.                 Daderiz 61
  489.                 2540 Grenchen
  490.                 Schweiz
  491.             
  492.                 Tel.: +41/65/52 03-11
  493.                 Fax:              -79
  494.   
  495.        Benchmark Modula-2 is available from:
  496.                 Armadillo Computing
  497.                 5225 Marymount Drive
  498.                 Austin, Texas 78723
  499.                 USA
  500.             
  501.                 Phone/FAX: 512/926-0360.
  502.                 EMail: Jim Olinger, jolinger@bix.com
  503.   
  504.   *Oberon*
  505.   *Oberon-2*
  506.        AmigaOberon is offered by A+L too. It is integrated into a full
  507.        developers environment and has a large library of modules. Library
  508.        linker and source level debugger are available. The AMOK user goup
  509.        supports AmiOberon as well as M2Amiga.
  510.   
  511.   *Pascal*
  512.        There is a PD-compiler called PCQ (Directory `dev/lang' on Aminet
  513.        or Fish disk 511). It doesn't support all of Pascal and major
  514.        features are missing. P2C, a pascal to C converter is on disk 341.
  515.        (Aminet: `/dev/misc/p2c120.lha') Additionally there are two
  516.        commercial compilers called HiSoft Pascal and KickPascal. HiSoft
  517.        Pascal and P2C claim to be compatible to Turbo Pascal up to 5.0.
  518.        HiSoft has a source level debugger included.
  519.   
  520.   3.6 Those never working Esc sequences!
  521.   ======================================
  522.   
  523.      Many printers come with a manual that explains which Esc sequence
  524.   causes which action on the printer. But there happen weird things when
  525.   you try to send these sequences to your printer, either it does
  526.   nothing, or it does something completely different. There is a reason,
  527.   the Amiga printer drivers. These drivers are made in a way that they
  528.   only understand a certain set of `ANSI Esc sequences', not the special
  529.   ones defined (differently) by the various printer manufacturers. The
  530.   purpose is that every application on the Amiga just uses this one
  531.   standard set of control sequences and this way doesn't need to know
  532.   which printer is actually connected. The printer driver then translates
  533.   these standard sequences into the special sequences a certain printer
  534.   understands.  A list of the available ANSI Esc sequences is found in
  535.   the current Workbench manuals (or older AmigaDOS manuals). Now if you
  536.   want to issue a control sequence to the printer that's not available as
  537.   an ANSI command, you have two possibilities to achieve this:
  538.     1. Bypass the printer driver (that would unsuccessfully try to
  539.        interpret the sequence) and send your output *only* during this
  540.        sequence to `PAR:' (or `SER:', respectively). For this you have to
  541.        close and open printer output channels very often which is rather
  542.        tedious, and you have to know where (`PAR:' or `SER:') your
  543.        printer is connected.
  544.   
  545.     2. Use a special ANSI sequence, made exactly for this case:
  546.                 `Esc[<n>"<x>'
  547.        where `<n>' is the decimally typed number of bytes in the string
  548.        `<x>', which actually contains your special printer sequence. This
  549.        ANSI sequence tells the printer driver to not interpret or
  550.        translate the next `<n>' bytes.
  551.           But both methods have one big disadvantage when used in an
  552.   application program: You lose the printer independency! If you stick to
  553.   ANSI sequen- ces, you can output to any printer on earth, as long as
  554.   there is an Amiga printer driver for it. If you start to use special
  555.   control sequences, your program will be tied to this single printer
  556.   model and will not be usefull for any other (or you would have to
  557.   provide some dozen new printer drivers for your application).
  558.   
  559.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.com
  560.   
  561.   3.7 Is it possible to use AmigaBasic on the A1200?
  562.   ==================================================
  563.   
  564.      We heard conflicting reports about AmigaBasic on the A1200: While I
  565.   said that you can work sufficiently with it, others said that this
  566.   isn't possible, as AmigaBasic crashes on the slightest little error.  I
  567.   couldn't reproduce this.
  568.   
  569.      Now I can. It depends on the setting in the Sound Prefs editor. When
  570.   you activate a sound there, this conflicts with sound that AmigaBasic
  571.   tries to produce by hand and obviously not quite the correct way itself.
  572.   
  573.      Easy solution: To work with AmigaBasic on the A1200, just
  574.     1. Switch off sound output in the Sound prefs editor.
  575.   
  576.     2. On the A4000 (as well as on an A1200 with Fast Mem expansion (1))
  577.        you  additionally need to run NoFastMem.
  578.   
  579.     3. Better avoid SUBs and use conventional GOSUBs instead, then the
  580.        compatibility with newer processors will be higher.
  581.   
  582.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.co
  583.   
  584.      ---------- Footnotes ----------
  585.   
  586.      (1)  If you have a turbo board
  587.   
  588.   3.8 How do I localize my program?
  589.   =================================
  590.   
  591.      Suggest, you want to write a `HelloLocalWorld.c'. Your final program
  592.   will look like this:
  593.   
  594.            #include "HelloLocalWorld_Cat.h"
  595.            #include <clib/exec_protos.h>
  596.        
  597.            struct Library *LocaleBase;
  598.        
  599.            void main(int argc, char *argv[])
  600.        
  601.            {
  602.                /* Open the locale.library. No kill, if not successfull.
  603.                   (Just use the builtin catalog strings instead.) Note, that
  604.                   we open locale.library here, even if our compiler supports
  605.                   AutoOpening.
  606.                */
  607.                LocaleBase = OpenLibrary("locale.library", 38);
  608.                OpenHelloLocalWorldCatalogs(NULL, NULL);
  609.        
  610.                printf(GetString(MSG_Hello));
  611.        
  612.                CloseHelloLocalWorldCatalog();
  613.                if (LocaleBase) CloseLibrary(LocaleBase);
  614.            }
  615.   
  616.      The routine GetString checks, if the wished catalogs are available
  617.   and returns a pointer to either the builtin string or the catalog
  618.   string. (In my case the german string.)
  619.   
  620.      You see, the main difference besides the minor opening and closing
  621.   stuff (OpenLibrary, OpenHelloLocalWorldCatalogs, ...) is to replace
  622.   strings with a function call. Hence we need a file
  623.   `HelloLocalWorld_Cat.c', which holds OpenHelloLocalWorld, GetString,
  624.   CloseHelloLocalWorld and the builtin strings (this could be an array,
  625.   where
  626.                array[MSG_Hello] = "Hello, local world.\n";
  627.   
  628.   is defined) and an include file `HelloLocalWorld_Cat.h', which defines
  629.   the message ID's like MSG_Hello. You don't need to know, how these files
  630.   work internally, especially you don't need to know `locale.library'!
  631.   
  632.      There are some catalog generators (in what follows: CGs) available
  633.   (`CatComp', for devlopers only, `KitCat', german docs only, `MakeCat',
  634.   which I don't know and `FlexCat', which I  recommend, because it is
  635.   most flexible in the generated source and supports catalogs on 2.0 and
  636.   any language, even Amiga-E, Cluster, Pascal, ... and besides that: I'm
  637.   the author ;-) are tools, that create  HelloLocalWorld_Cat.h,
  638.   HelloLocalWorld_Cat.c and the real catalogs for you. (The above code
  639.   might differ slightly between the different CGs.) (See Aminet, directory
  640.   `dev/misc'.)
  641.   
  642.      Of course they need to know how to use them. First create a so-called
  643.   `catalog-description' file. This could look like this:
  644.            ; Lines beginning with a semicolon are comment lines.
  645.            # language english
  646.            ; the language of the builtin strings
  647.            # version 0
  648.            ; the catalog version (0 = any)
  649.            MSG_Hello (1/15/30)
  650.            Hello, local world
  651.   
  652.   Any string is defined by a line like the last two lines above: MSG_Hello
  653.   is the message-ID, (1/15/30) says, that the value of MSG_Hello should be
  654.   1 (you may omit this, in which case just the next free number is used)
  655.   and the string must not be shorter than 15 characters or longer than 30
  656.   characters. (These may be omitted too.)
  657.   
  658.      Now write your program. Once you are ready, use the CGs to create a
  659.   so-called catalog translation file. (One for any language different than
  660.   the builtin.) In my case (german) this could look like this:
  661.            ; Lines beginning with a semicolon are comment lines.
  662.            ## language deutsch
  663.            ; the catalog language (german)
  664.            ## version $VER: Deutsch.catalog 1.0 (22.12.93)
  665.            ; the catalog files version string
  666.            MSG_Hello
  667.        
  668.            ; Hello, local world
  669.   
  670.   Note the empty line after the message ID. (The arguments of ## language
  671.   and ## version would be missing as well.) You have to fill in the
  672.   german strings here. Again using the CGs you create a catalog file from
  673.   this. Additionally note, that no informations on the strings ID or
  674.   length are behind MSG_Hello.  They are taken from the catalog
  675.   description file.
  676.   
  677.      Once you change the program (adding strings, changing the string
  678.   length) you change the catalog description as well, use the CGs in the
  679.   same way to update the catalog translation and hence the catalogs.
  680.   
  681.   3.9 How to obtain a pointer to a console's window
  682.   =================================================
  683.   
  684.      The following function returns the window pointer of a CON window.
  685.   It can be executed safely under all versions of the Amiga's OS.
  686.   
  687.          struct Window *getConWindowPtr(BPTR fh)
  688.           {
  689.           struct Window *w;
  690.           struct FileHandle *cfh;
  691.           struct StandardPacket *sp;
  692.           struct InfoData *id;
  693.           struct MsgPort *mp;
  694.        
  695.           w = NULL;
  696.        
  697.           if((cfh = BADDR(fh))->fh_Type != NULL)
  698.            {
  699.            if(sp = AllocMem(sizeof(struct StandardPacket),
  700.                             MEMF_PUBLIC | MEMF_CLEAR))
  701.             {
  702.             if(id = AllocMem(sizeof(struct InfoData),
  703.                              MEMF_PUBLIC | MEMF_CLEAR))
  704.              {
  705.              if(mp = CreatePort(NULL, 0))
  706.               {
  707.               sp->sp_Msg.mn_Node.ln_Name = (char *)&sp->sp_Pkt;
  708.               sp->sp_Pkt.dp_Link         = &sp->sp_Msg;
  709.               sp->sp_Pkt.dp_Port         = mp;
  710.               sp->sp_Pkt.dp_Type         = ACTION_DISK_INFO;
  711.               sp->sp_Pkt.dp_Arg1         = MKBADDR(id);
  712.        
  713.               PutMsg(cfh->fh_Type, &sp->sp_Msg);
  714.               (void)WaitPort(mp);
  715.               (void)GetMsg(mp);
  716.        
  717.               if(sp->sp_Pkt.dp_Res1)
  718.                w = (struct Window *)id->id_VolumeNode;
  719.        
  720.               DeletePort(mp);
  721.               }
  722.              FreeMem(id, sizeof(struct InfoData));
  723.              }
  724.             FreeMem(sp, sizeof(struct StandardPacket));
  725.             }
  726.            }
  727.        
  728.           return w;
  729.           }
  730.   
  731.      Notes:
  732.      * Accessing a console's window directly may interfere with operations
  733.        performed by the CON handler. Be careful!
  734.   
  735.      * To obtain the window pointer of a CLI's console, pass the
  736.        FileHandle returned by Open("*", MODE_OLDFILE) to the above
  737.        function.
  738.   
  739.      * The result of the above function may well be NULL, e.g. in case of
  740.        an AUX handler or if an AUTO CON handler is unable to open its
  741.        window.
  742.   
  743.      * Sending an ACTION_DISK_INFO packet to an AUTO CON handler (2.0+)
  744.        causes its window to lose its special AUTO properties (i.e. it can
  745.        no longer be closed at any time by clicking on its Close gadget),
  746.        as the window pointer returned in id_VolumeNode must remain valid
  747.        from now on.
  748.   
  749.      * All in all: Don't use this function. :-)
  750.   
  751.      For more information, please refer to pages 273, 276, 435, 463, 485,
  752.   and 629 in "The Amiga Guru Book" (see Manuals).
  753.   
  754.      Ralph Babel, rbabel@babylon.pfm-mainz.de
  755.   
  756.   3.10 What are pragmas?
  757.   ======================
  758.   
  759.      Pragmas are special preprocessor commmands which control certain
  760.   features of a C-compiler. Two problems arise when using pragmas:
  761.     1. Pragmas are compiler specific. You cannot expect that one compiler
  762.        will understand pragmas of another compiler, even if both run on
  763.        the Amiga.
  764.   
  765.     2. You are not guaranteed that a compiler ignores pragmas, that he
  766.        doesn't understand. Even more: It might not help, to use something
  767.        like this:
  768.                 #ifndef MY_COMPILER
  769.                 #pragma DoAnything
  770.                 #endif
  771.   
  772.   A workaround is to put pragmas in a special include file (BTW, the same
  773.   holds true for statements like #asm (Aztec-C) or #extern (C++) and
  774.   replace the above with
  775.            #ifndef MY_COMPUTER
  776.            #include <mypragmas.h>
  777.            #endif
  778.   
  779.      But what do pragmas on the Amiga? The most common usage (not the
  780.   only, but most meant when talking about pragmas) is to tell the
  781.   compiler about how to call library functions: Simple C functions expect
  782.   their arguments on the stack, but library functions want their
  783.   arguments in special processor registers and additionally the `library
  784.   base' in register a6. Lets have a look at a pragma command of the
  785.   Aztec-Compiler.
  786.            #pragma amicall(SysBase,0xd2,FreeMem(a1,d0))
  787.   
  788.   This tells the compiler to put the first argument of FreeMem in register
  789.   a1, the second in register d0 and the value of the variable SysBase in
  790.   register a6. Maxons pragmas look the same, Dice pragmas and SAS pragmas
  791.   look a bit more complicated;
  792.            #pragma libcall SysBase FreeMem d2 0902
  793.   
  794.   Here d2 is (like 0xd2 above) the `library vector offset' (see below),
  795.   the digits 09 are codes for the argument register in reversed order
  796.   (Register codes are 0=d0, 1=d1, .., 8=a0, 9=a1, a=a2, ..), the
  797.   following 0 is the result's registerΣ(always d0))and the final digit 2
  798.   is the number of arguments.
  799.   
  800.      A command `FreeMem(fib,sizeof(*fib);' could produce the following
  801.   code, if the compiler has seen a pragma statement like above:
  802.            move.l  _fib,a1
  803.            move.l  260,d1        ; sizeof(struct FileInfoBlock)
  804.            move.l  _SysBase,a6
  805.            jsr     -0xd2(a6)       ; 0xd2 = _LVOFreeMem
  806.   
  807.   Calling FreeMem in that way is shorter and faster than pushing the
  808.   arguments on the stack, calling a function _FreeMem which would do just
  809.   the same like the above code by pulling the arguments from the stack.
  810.   
  811.      The best way to use pragmas is to include statements like the
  812.   following in your program:
  813.            /*    Get the prototype for the function; note, that this is    */
  814.            /*    compiler independent.                    */
  815.            #include <clib/exec_protos.h>
  816.        
  817.            /*    Get the pragma; compiler dependent, but most pragmas    */
  818.            /*    are in files with the same name.
  819.            #ifdef AZTEC_C
  820.            #include <pragmas/exec_lib.h>
  821.            #endif
  822.            #if defined(__SASC) || defined(_DCC) || defined(__MAXON__)
  823.            #include <pragmas/exec_pragmas.h>
  824.            #endif
  825.            #ifdef __GNUC__
  826.            #include <inline/exec.h>
  827.            #endif
  828.   
  829.   The above example can be compiled on all these compilers and produce the
  830.   best code.
  831.   
  832.      A final question arises: How to get the pragmas? Most compilers have
  833.   them included. However, sometimes you want to produce pragmas for
  834.   yourself, for example if you are using new libraries or new versions
  835.   with additional functions. In that case you can produce them from the
  836.   so-called `FD' files which should be a part of the developer docs of
  837.   the library. (The NDU has a directory FD which contains FD files for
  838.   all libraries and devices of the OS. see Includes) Most compilers have
  839.   a utility with the name `fd2pragma' or similar included which can do
  840.   that for you. A freely distributable version which can produce pragmas
  841.   for Aztec, Dice, SAS and Maxon as well as LVO files for assembler and
  842.   stub routines for the tag versions is available on Aminet
  843.   (`dev/misc/fd2pragma2_0.lha' and on the Fish CDs.
  844.   
  845.   3.11 Where do I find the function xxx?
  846.   ======================================
  847.   
  848.      First ensure, that the function is really missing: For example
  849.   floating point functions are in a special link library and you need a
  850.   linker option like `-lm' to include it into your program. Another
  851.   possibility would be that you are using a library function and didn't
  852.   notice it. This might lead to a missing library base, `IntuitionBase'
  853.   for example. In that case just put something like
  854.            struct Library *IntuitionBase;
  855.   
  856.   somewhere in the global part of your program. (Don't forget to call
  857.   OpenLibrary() and CloseLibrary! :-)
  858.   
  859.      However, you could as well use a function which really isn't present
  860.   in your library at all. If you have, for example, an amiga.lib from 2.0
  861.   you would hardly find the locale functions or the pool memory
  862.   functions. (1) Best solution is to get the NDU (see Includes), but you
  863.   probably don't want to wait for it. In that case you have to find what
  864.   kind of function you are missing.
  865.      * Simple library functions (Examples: `exec/AllocPooled',
  866.        `locale/OpenCatalogA') can be called with pragmas. However, you
  867.        need informations on the name of the library base and where to put
  868.        the arguments. See Pragmas.
  869.   
  870.      * Tag functions are mostly just stub functions which call library
  871.        functions. If you have, for example, `dos/AllocDosObject' which
  872.        expects a constant and a pointer to an array of tags, you have the
  873.        varargs version `AllocDosObjectTags' which expects tags on the
  874.        stack as well! Just create the following function:
  875.                 #include <clib/dos_protos.h>
  876.                 #include <pragmas/dos_pragmas.h>    /*  Probably wrong name */
  877.             
  878.                 void *AllocDosObjectTags(ULONG objtype, Tag tag1, ...)
  879.                 { return(AllocDosObject(objtype, (struct TagItem *) &tag1);
  880.                 }
  881.   
  882.      * Some functions still remain: Amiga.lib has some functions which
  883.        are really doing valuable things and not just call a library: The
  884.        BOOPSI functions (`DoMethod', `DoSuperMethod') the memory pool
  885.        functions (`LibAllocPooled', `LibCreatePool', which are
  886.        replacements of 3.0 functions). The only way to replace these is
  887.        to get equivalents. The AmigaFAQ archive contains some of them
  888.        (DoMethod, DoSuperMethod and HookEntry) in the `programmer'
  889.        directory as well as the most common pragma files and some
  890.        examples of varargs functions. See Amiga-FAQ Archive.
  891.   
  892.      ---------- Footnotes ----------
  893.   
  894.      (1)  This problem arises most frequently for owners of Aztec which
  895.   is no longer supported and owners of Dice, which has sometimes rather
  896.   incomplete libraries. I own both ...
  897.   
  898.   4 Applications
  899.   **************
  900.   
  901.      This chapter offers informations about major Applications.
  902.   
  903.   4.1 Text Editors
  904.   ================
  905.   
  906.      Text Editors are programs allowing to enter and edit unformatted
  907.   text.  Generally, this means text that is meant to be manipulated by
  908.   machine, rather than human. Programmers use these to enter the text for
  909.   compilers.  Since UNIX machines don't typically have word processors,
  910.   most text processing starts with a text editor, then is filtered
  911.   through a page layout system (TeX, for example) to produce attractive
  912.   paper results.
  913.   
  914.   *Commercial Products*
  915.        CygnusEd Professional and TurboText seem to be the main contenders
  916.        in the professional realm. The Fred Fish disks contain dozens of
  917.        other shareware text editors. A demo version of TurboText is on
  918.        Fish disk 445.  A very old demo of CygnusEd is on Fish disk 95
  919.        (testament to its lasting-power). In the following some freely
  920.        distributable editors will be discussed.
  921.   
  922.   *Emacs*
  923.        Gnu Emacs (the "G" is not silent) comes from Unix and is probably
  924.        the king of editors - it's huge (about 1 Megabyte), feature-packed
  925.        (it does windows and even contains a game!) and extensible (if you
  926.        know lisp you can write new emacs functions and bind them to any
  927.        key combination).  On the other hand, it may be too huge, its
  928.        feature-ladenness is imposing, and its extensibility often means
  929.        you can't use someone else's emacs configuration. Source: Aminet
  930.        (directory `util/gnu').
  931.   
  932.   *Vi*
  933.        The leaner, less configurable, non-extensible cousin to gnu emacs
  934.        is vi (pronounced "vee eye"). Unix people like vi especially
  935.        because you find it on *any* Unix machine. What you choose is
  936.        personal preference, and will mark you for life. Vim is a good vi
  937.        for the amiga, and is on Fish disk 591 or in the `util/gnu'
  938.        directory of Aminet.
  939.   
  940.   *DME*
  941.        Many Amiga programmers like DME. It's fast, fully configurable;
  942.        menus may be created and any key may be mapped. It's much easier
  943.        to learn DME than than Emacs or Vi. There are three different
  944.        versions: AmokEd, DME and XDME. It's a matter of opinion which you
  945.        prefer. (Oberon and Modula programmers like AmokEd because it's
  946.        written in Oberon and supports AmiOberon error messages, C
  947.        programmers like DME or XDME.) Sources: Aminet (directory
  948.        `util/edit'), Fish disk 776 (XDME) and 749 (AmokEd), AMOK 90.
  949.   
  950.   4.2 What word processors are there?
  951.   ===================================
  952.   
  953.      A word processor is the typical application for writing notes,
  954.   letters or reports on a computer. Unless you prepare newsletters on a
  955.   weekly basis, your word procesor is probably your workhorse program.
  956.   Thus choosing one you are comfortable with determines how comfortable
  957.   you are with your computer. Word processors can offer a variety of
  958.   features, and many can approach the sophistication required for Desktop
  959.   Publishing (see DTP) but no one uses them for programming, for which
  960.   text editors are more suited.
  961.   
  962.      One distinguishes between Wysiwyg programs (What you see is what you
  963.   get) and page layout languages. Wysiwyg programs should be fast,
  964.   comfortable and easy to use. Most people prefer them. The alternative
  965.   is an approach that works similar to compilers. You feed text files to
  966.   a a program that produces the layout which may be previewed on screen
  967.   or printed. LaTeX takes this approach. See TeX. Lout is another such
  968.   system which seems smaller, easier to learn and has full documentation
  969.   included, but it is nonstandard.  Lout produces Postscript output. (I
  970.   don't know if this is an advantage or disadvantage. ;-) See Postscript.
  971.   Both programs are freely distributable.
  972.   
  973.      There are a lot of wysiwyg programs, but only commercial products:
  974.   Final Copy II, Wordworth, Word Perfect, AmiWrite, Beckertext II, Maxon
  975.   Word and many others. I don't dare to recommend any. ALl I can say is:
  976.   Give yourself time to make a selection.
  977.   
  978.   4.3 Desktop Publishing
  979.   ======================
  980.   
  981.      These programs offer features lacking in word processors, usually
  982.   tailored to flexible arrangement of text, but often don't provide all of
  983.   the text manipulation that a good word processor provides. The best
  984.   desktop publishing programs strive to provide the features of both,
  985.   just as the best word processors strive to provide the features of
  986.   desktop publishing programs. Microsoft Word (Mac, PC) is a good example
  987.   of a word processing program that offers many page layout feature.
  988.   Framemaker (UNIX, Macintosh, DOS, etc.) is an example of a desktop
  989.   publishing system that offers most needed word processing functions. As
  990.   yet, no Amiga program has bridged the gap, though the main word
  991.   processors are coming close. (On the other hand, even many
  992.   sophisticated programs don't support typesetting mathematics, tables,
  993.   producing bibliographies, indexes, or cross-references. The page layout
  994.   languages do, and programs like Frame are improving their support of
  995.   such features.) Unless you need to prepare fancy newsletters or
  996.   promotional literature, a word processing program is probably enough.
  997.   See Word Processors.
  998.   
  999.      There are not yet any freely distributable wysiwyg desktop publishing
  1000.   systems. Commercial products are ProPage and PageStream. They have been
  1001.   playing leapfrog for the past few years. It appears that PageStream 3.0
  1002.   is about to leap ahead. A more detailed description of these products
  1003.   and their differences is welcome. Both programs' list prices are $299.
  1004.   Student discounts are available (approx 40% discount.)
  1005.   
  1006.   4.4 What is TeX and where can I get it?
  1007.   =======================================
  1008.   
  1009.      TeX is a very powerful wordprocessing system. It can display
  1010.   mathematical formulas or complex tables as well as function graphs,
  1011.   creates indices, contents and many other things. Its greatest advantage
  1012.   is that it is freely distributable (TeX, not the previewers and the
  1013.   printer drivers!) and that you find TeX all over the world on every
  1014.   computer family. Its greatest disadvantage is that it isn't very handy
  1015.   (works similar to a compiler) and it isn't wysiwyg. But many people
  1016.   like it. (BTW: This document is written using TeX. 8-) See Word
  1017.   Processors.
  1018.   
  1019.      There are two major implementations on the Amiga. The first one,
  1020.   Amiga-TeX, from Thomas Rockicki and Radical Eye software is commercial.
  1021.   It is said to be excellent and his owners seem to be very satisfied.
  1022.   But it costs at least 200$.
  1023.   
  1024.      I recommend PasTeX, a freely distributable version. People seem to
  1025.   have problems installing PasTeX, especially the font loading and
  1026.   generation (It's a quite complex program.) but I did not here anyone
  1027.   upset once it was installed. (A friend with knowledge of TeX helps
  1028.   immensely.) A few words should be said what you need:
  1029.      * 5 disks containing the TeX-compiler itself
  1030.   
  1031.      * 2 disks containing MetaFont
  1032.   
  1033.      * Nothing more Many people ask for fonts. They are included in the
  1034.   MetaFont-package and can get compiled by you. All you need to do is
  1035.   setting up your TeX-system in the right way which is described in the
  1036.   documentation. Please note that the PasTeX disks are compressed using
  1037.   the program Zoom. (see Endings) Sources: FTP at `ftp.uni-passau.de',
  1038.   directory `/pub/amiga/tex/PasTeX1.3'.
  1039.   
  1040.   4.5 Are there any Postscript interpreters?
  1041.   ==========================================
  1042.   
  1043.      PostScript is a programming language designed to be used to describe
  1044.   printing on pages. Apple helped make PostScript popular by selling
  1045.   printers with built in PostScript interpreters. Many programs have
  1046.   evolved to produce PostScript programs as their output, making
  1047.   PostScript the lingua franca of printing. Until recently, in order to
  1048.   print a PostScript file, you had to have a relatively expensive laser
  1049.   printer. The development that changed this was the software PostScript
  1050.   interpreter. These programs allow your computer to interpret PostScript
  1051.   programs, and produce the matrix of dots to send to your normal
  1052.   graphics printer.
  1053.   
  1054.      One of the benefits of PostScript is that it is resolution
  1055.   independent.  What this means is that it can support the highest
  1056.   resolution of your device - and that you can reasonably preview
  1057.   PostScript on a low resolution screen.
  1058.   
  1059.      There are two free PostScript interpreters for the Amiga. Post and
  1060.   Ghostscript. Post comes as an Amiga shared library along with front
  1061.   ends for previewing to the screen and printing. This structure allows
  1062.   others to write programs that can show PostScript images on screen. In
  1063.   fact, AmigaTeX uses Post's library to support incorporation of
  1064.   PostScript into documents.  Ghostscript similarly comes in two
  1065.   programs, but not as a shared library.  Ghostscript is the rendering
  1066.   engine, and Ghostview is the front end.  Sources: Aminet (directorys
  1067.   `text/print' and `text/dtp'), Fish disk 669
  1068.   
  1069. -- 
  1070. Jochen Wiedmann            E-Mail: wiedmann@mailserv.zdv.uni-tuebingen.de
  1071.